package demo.practice.tree.depth;

import demo.practice.TreeNode;

public class Ms0404 {

    //实现一个函数，检查二叉树是否平衡。在这个问题中，平衡树的定义如下：任意一个节点，其两棵子树的高度差不超过 1。
    //1.分别求高度
    //2.左右高度差 不超过1
    //3.子树也是平衡树
    public boolean isBalanced(TreeNode root) {

        if(root==null)
            return true;

        if(Math.abs(depth(root.left)-depth(root.right))>1)
            return false;
        else
            return isBalanced(root.right)&& isBalanced(root.left);
    }


    public int depth(TreeNode root) {
        if(root==null)
            return 0;
        return Math.max(depth(root.left)+1,depth(root.right)+1 );
    }
}
